package h0730;

import java.util.*;

/**
  * @description 使用连续自然数之和表达整数
  * @author 不知名帅哥
  * @date 2024/7/30 14:45
  * @version 1.0
*/
public class ExpressNumWithNaturalNumbers2 {

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            getResult(sc.nextInt());
        }

        //这里使用的是滑动窗口
        public static void getResult(int t){
            int[] arr=new int[t];
            for (int i = 0; i < t; i++) {
                arr[i]=i+1;
            }

            ArrayList<int[]> ans=new ArrayList<>();
            int l=0;
            int r=1;

            int sum=arr[l];
            while (l<t){
                if (sum>t){
                    //窗口左移，缩小窗口
                    sum-=arr[l++];
                }else if (sum==t){
                    ans.add(Arrays.copyOfRange(arr,l,r));
                    sum-=arr[l++];
                    if (r>=t) break;
                    sum+=arr[r++];
                }else {
                    //窗口右移
                    sum+=arr[r++];
                }
            }
            ans.sort((o1, o2) -> o1.length-o2.length);
            for (int[] a : ans) {
                StringJoiner joiner=new StringJoiner("+");
                for (int i : a) {
                   joiner.add(i+"");
                }
                System.out.println(t+"="+joiner);
            }
            System.out.println("Result:"+ans.size());
        }

}
